package Review05;

public class Test {
    public static void main(String[] args) {
//        Dog dog = new Dog("h",100,100,"哈士奇");
//        dog.print();
        Penguin penguin = new Penguin("q",100,100,"熊");
//        penguin.print();
        //多态：同一个引用类型，使用不同的实例会执行不同的操作
        //方法重写是实现多态的基础
        //置换法则：任何超类的地方，都可以用子类对象进行置换
//        Pet p1 = new Dog("l",100,102,"拉布拉多");
//        p1.print();
//        Pet p2 = new Penguin("qq",100,100,"母");
//        p2.print();

        Master master = new Master();
//        master.cure(p1);
        /*final修饰的方法不能被重写
        * final修饰的类不能被继承
        * */
        //类型转换
        //向上转换 把子类的狗类转换成父类
        Pet pet01 = new Dog("h",100,100,"哈士奇");

        /* 向下转型 */ //强制转换
        if (pet01 instanceof Dog){
            Dog dog = (Dog) pet01;
            System.out.println(dog.getStrain());
        }

        Pet pet = master.adopt("狗");
        pet.print();
        master.play01(pet);
    }
}
